package com.demo.service;


import java.util.List;

import com.demo.entity.dto.SessionWebUserDto;
import com.demo.entity.po.UserInfo;

import com.demo.entity.query.UserInfoQuery;

import com.demo.entity.vo.PaginationResultVO;

/**
 * @Description:用户表service
 * @Date:2025-03-01
 * @author：author
*/
public interface UserInfoService{

	/**
	 * 根据条件查询列表
	 */
	List<UserInfo> findListByParam(UserInfoQuery query);

	/**
	 * 根据条件查询数量
	 */
	Integer findCountByParam(UserInfoQuery query);

	/**
	 * 分页查询
	 */
	PaginationResultVO<UserInfo> findListByPage(UserInfoQuery  query);

	/**
	 * 新增
	 */
	Integer  add(UserInfo bean);

	/**
	 * 批量新增
	 */
	Integer  addBatch(List<UserInfo> listBean);

	/**
	 * 批量新增或者修改
	 */
	Integer  addOrUpdateBatch(List<UserInfo> listBean);


	/**
	 * 根据UserId查询
	 */
	UserInfo getUserInfoByUserId(Long userId);

	/**
	 * 根据UserId更新
	 */
	Integer updateUserInfoByUserId(UserInfo bean, Long userId);

	/**
	 * 根据UserId删除
	 */
	Integer deleteUserInfoByUserId(Long userId);


	/**
	 * 根据Username查询
	 */
	UserInfo getUserInfoByUsername(String username);

	/**
	 * 根据Username更新
	 */
	Integer updateUserInfoByUsername(UserInfo bean, String username);

	/**
	 * 根据Username删除
	 */
	Integer deleteUserInfoByUsername(String username);


	/**
	 * 根据Email查询
	 */
	UserInfo getUserInfoByEmail(String email);

	/**
	 * 根据Email更新
	 */
	Integer updateUserInfoByEmail(UserInfo bean, String email);

	/**
	 * 根据Email删除
	 */
	Integer deleteUserInfoByEmail(String email);


	/**
	 * 根据Phone查询
	 */
	UserInfo getUserInfoByPhone(String phone);

	/**
	 * 根据Phone更新
	 */
	Integer updateUserInfoByPhone(UserInfo bean, String phone);

	/**
	 * 根据Phone删除
	 */
	Integer deleteUserInfoByPhone(String phone);


    void restMyPassword(String email, String account, String password, String emailCode);

	/**
	 * 注册账号
	 * @param email
	 * @param account
	 * @param password
	 * @param emailCode
	 */
	void register(String email, String account,  String password, String emailCode);


	/**
	 * 登录
	 * @param account 账号
	 * @param password 密码
	 * @return
	 */
	SessionWebUserDto login(String account, String password);

	void updateStatus(Long userId, Integer status);

	void saveUserInfo(UserInfo bean);
}